<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Roadmap: How to Adopt the Evolutionary Design Practice</title>
<meta name="uma.type" content="Roadmap">
<meta name="uma.name" content="how_to_adopt_evolutionary_design">
<meta name="uma.presentationName" content="How to Adopt the Evolutionary Design Practice">
<meta name="element_type" content="other">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="_irQiEOCsEdynptYdmll41Q"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Roadmap: How to Adopt the Evolutionary Design Practice</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/roadmap.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">This roadmap describes how to adopt the Evolutionary Development practice.</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><p>
    <strong>Getting Started</strong>
</p>
<p>
    Begin by gaining an understanding of&nbsp;<a class="elementLinkWithUserText" href="./../../../core.tech.common.extend_supp/guidances/concepts/pattern_10BE6D96.html" guid="_0YJvUMlgEdmt3adZL5Dmdw">design patterns</a>. There are good references in the Additional&nbsp;Information
    section of the&nbsp;<a class="elementLink" href="./../../../practice.tech.evolutionary_design.base/guidances/practices/evolutionary_design_DE27D8D9.html" guid="_aSVhIB4qEd2bS8fFOQ7WWA">Evolutionary Design</a>&nbsp;page. Patterns are essential to creating, managing, and
    evolving designs. As the name implies, evolutionary design involves returning to the existing design over and over
    again to refine, change, and improve previous thinking. It can be performed at the beginning of a development cycle
    (before implementation), during a development cycle (while implementing code), after the cycle (when the developer
    tests have&nbsp;successfully executed), or any combination of these. The team should determine where in the development
    cycle the design will be performed. See <a class="elementLinkWithType" href="./../../../practice.tech.evolutionary_design.base/tasks/design_solution_A97CE9EA.html" guid="_0fshwMlgEdmt3adZL5Dmdw">Task: Design the Solution</a>.
</p>
<p>
    Understand <a class="elementLinkWithUserText" href="./../../../core.tech.common.extend_supp/guidances/concepts/refactoring_1B63BA3B.html" guid="_Poc7IPDzEdqYgerqi84oCA">refactoring</a> and the difference between code refactoring and design refactoring.
    There is no exact boundary separating the two, but there are some clear areas where the developer will wear the "design
    hat" when reworking the design into a better structure. These areas will usually involve identifying where design
    patterns can replace or enhance the existing design, or areas of the design where patterns can be identified and
    harvested for reuse.
</p>
<p>
    <strong>Common pitfalls</strong>
</p>
<p>
    Evolutionary design emerges from refactoring existing design. This improves the design without changing the behavior of
    the system. Failing to perform developer or unit testing is a high risk activity, as you can not guarantee that:
</p>
<ul>
    <li>
        The original design works correctly
    </li>
    <li>
        The refactored design works correctly
    </li>
</ul>
<p>
    Therefore, you must perform rigorous <a class="elementLinkWithUserText" href="./../../../core.tech.common.extend_supp/guidances/concepts/developer_testing_FEBDAED6.html" guid="_ADwlAJRtEdyrdaw_xGakyw">developer testing</a> in order to verify the robustness of the design. Otherwise, you
    may waste a lot of time refactoring something that does not work, or refactoring the correct behavior out of the
    system.
</p></td>
</tr>
</table>
</div>
<div class="sectionHeading">More Information</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Concepts</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/concepts/developer_testing_FEBDAED6.html" guid="_ADwlAJRtEdyrdaw_xGakyw">Developer Testing</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/concepts/pattern_10BE6D96.html" guid="_0YJvUMlgEdmt3adZL5Dmdw">Pattern</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/concepts/refactoring_1B63BA3B.html" guid="_Poc7IPDzEdqYgerqi84oCA">Refactoring</a>
</li>
</ul>
</td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Guidelines</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/guidelines/developer_testing_9974EA47.html" guid="_ByOd4O6pEduvoopEslG-4g">Developer Testing</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/guidelines/refactoring_F3D63EBD.html" guid="_YNx2sJ05EdyQ3oTO93enUw">Refactoring</a>
</li>
</ul>
</td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Supporting Materials</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../practice.tech.evolutionary_design.base/guidances/supportingmaterials/using_ed_in_context_4E5732E2.html" guid="_atpj0GjLEd2PJ-nlV-86WA">Using Evolutionary Design in Context</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright"><p> This program and the accompanying materials are made available under the<br />
  <a href="http://www.eclipse.org/org/documents/epl-v10.php" target="_blank">Eclipse 
  Public License V1.0</a>, which accompanies this distribution. </p><p/><p> <a class="elementLink" href="./../../../core.default.release_copyright.base/guidances/supportingmaterials/openup_copyright_C3031062.html" guid="_UaGfECcTEduSX6N2jUafGA">OpenUP Copyright</a></p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
